#ifndef poolh
#define poolh
#include<func.h>

enum
{
    BUSY,
    FREE
};

struct work_status
{
    //PID记录
    pid_t pid;

    int local_socket;

    int status;

};
//注册信号函数
void signal_get(int num);

//新建子进程
int init_pool(struct work_status* workarr, int num);

//进行三次挥手并且监听
int start_listen( int socket_fd,const char * ip,const char* port);

//加入监听集合
int add_epoll( int epfd, int fd);

//收到来自客户端的任务把他交给子进程
int give_son_do(int net_fd, struct work_status* workarr,int num,int flag);

//子进程业务逻辑
int work(int local_socket);

//接受利用本地套接字发送的信息，包括优雅退出信息以及与用户一对一对应的缓冲区的指针信息
int recv_from_main(int local_socket,int * flag, int *net_fd);

//本地实现recv(netfd,buf,len,MSG_WAITALL)
int recvn(int netfd,char*buf,int length);

//用本地套接字发送net_fd
int write_net_fd(int local_socket, int* netfd, int flag);
#endif
